package com.aifund.common.config;

import com.aifund.common.entity.SystemConfig;
import com.aifund.common.enums.config.ConfigEnum;
import com.aifund.common.service.SystemConfigService;
import io.minio.MinioClient;
import io.minio.errors.InvalidEndpointException;
import io.minio.errors.InvalidPortException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MinioClientConfig {

    @Autowired
    SystemConfigService systemConfigService;
    @Bean
    public MinioClient minioClient(){
        initConfig();
        String serverUrl = systemConfigService.getByKey(ConfigEnum.FILE_SERVICE_URL.getConfigKey()).getConfigValue();
        String accessKey = systemConfigService.getByKey(ConfigEnum.MINIO_ACCESS_KEY.getConfigKey()).getConfigValue();
        String secretKey = systemConfigService.getByKey(ConfigEnum.MINIO_SECRET_KEY.getConfigKey()).getConfigValue();
        MinioClient minioClient = null;
        try {
            minioClient = new MinioClient(serverUrl,9000, accessKey, secretKey,false);
        } catch (InvalidEndpointException e) {
            e.printStackTrace();
        } catch (InvalidPortException e) {
            e.printStackTrace();
        }
        return minioClient;
    }

    /**
     * 初始化系统配置
     */
    private void initConfig(){
        for(ConfigEnum value:ConfigEnum.values()){
            String configKey = value.getConfigKey();
            if(systemConfigService.getByKey(configKey)==null){
                SystemConfig systemConfig = new SystemConfig();
                systemConfig.setConfigKey(value.getConfigKey());
                systemConfig.setConfigValue(value.getDefaultValue());
                systemConfig.setConfigName(value.getConfigName());
                systemConfigService.save(systemConfig);
            }
        }
    }

}
